home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / GFXFX2.ZIP / PLASMA2.PAS < prev    next >
Pascal/Delphi Source File  |  1995-02-14  |  1KB  |  76 lines

  1.  
  2. program plasma; { PLASMA2.PAS }
  3. { Assembler/Mode-13h version of Plasma, by Bas van Gaalen }
  4. uses u_vga,u_pal;
  5. var stab:array[0..255] of byte; i1,j1:byte;
  6.  
  7. procedure doplasma; assembler;
  8. asm
  9.   mov es,u_vidseg
  10.  @run:
  11.   call vretrace
  12.   add i1,1
  13.   add j1,1
  14.   mov si,5
  15.   mov ax,si
  16.   shl ax,6
  17.   mov di,ax
  18.   shl ax,4
  19.   add di,ax
  20.   add di,20
  21.  @l0:
  22.   xor bh,bh
  23.   mov bl,i1
  24.   add bx,si
  25.   and bx,$ff
  26.   mov dl,byte ptr stab[bx]
  27.   xor bh,bh
  28.   mov bl,j1
  29.   mov dh,byte ptr stab[bx]
  30.   mov cx,10
  31.  @l1:
  32.   mov bx,dx
  33.   add bx,cx
  34.   xor bh,bh
  35.   mov al,byte ptr stab[bx]
  36.   mov bx,dx
  37.   shr bx,8
  38.   add bx,si
  39.   xor bh,bh
  40.   add al,byte ptr stab[bx]
  41.   mov ah,al
  42.   mov [es:di],ax
  43.   add di,2
  44.   add ax,$1010               { disortion }
  45.   mov [es:di],ax
  46.   add di,318
  47.   mov [es:di],ax
  48.   sub ax,$1010               { disortion }
  49.   add di,2
  50.   mov [es:di],ax
  51.   sub di,318
  52.   inc cx
  53.   cmp cx,80
  54.   jne @l1
  55.   add di,360
  56.   inc si
  57.   cmp si,85
  58.   jne @l0
  59.   in al,$60
  60.   cmp al,$80
  61.   ja @run
  62. end;
  63.  
  64. var i:byte;
  65. begin
  66.   setvideo($13);
  67.   for i:=0 to 255 do
  68.     setrgb(i,32+trunc(31*sin(i*pi/128)),
  69.              32+trunc(31*sin(i*pi*2/128)),
  70.              32+trunc(31*cos(i*pi*4/128)));
  71.   for i:=0 to 255 do stab[i]:=round(sin(2*pi*i/255)*128)+128;
  72.   i1:=50; j1:=90;
  73.   doplasma;
  74.   setvideo(u_lm);
  75. end.
  76.